precision mediump float;

uniform vec2 u_resolution;
// 起点坐标
vec2 startP = vec2(0,0);

// 颜色集合
vec4 colors[4];
// 半径集合
float rations[4];

void main (){
  // 将坐标系原点放置在中心
  vec2 uv = ( 2.0 * gl_FragCoord.xy - u_resolution.xy) / min(u_resolution.x,u_resolution.y);

  colors[0] = vec4(1.0, 0.0, 0.0, 1.0);
  colors[1] = vec4(0.7843, 1.0, 0.0, 1.0);
  colors[2] = vec4(1.0, 1.0, 0.0, 1.0);
  rations[0] = 0.0;
  rations[1] = 0.5;
  rations[2] = 0.75;

  // 像素点减去起点后得到的向量
  vec2 sf = vec2(uv) - startP;
  // 像素和起点的半径
  float len = length(sf);
  vec4 color = vec4(0);
  for(int i=0; i<3; i++){
    // 第一个比值
    float l = rations[i];
    // 第一个颜色
    vec4 c = colors[i];
     // 第二个比值
    float l1 = rations[i+1];
    // 第二个颜色
    vec4 c1 = colors[i+1];
    if(len >= l && len <= l1){
      // 颜色差值
      vec4 dc = c1-c;
      float dl = (len - l) / (l1 - l) ;
      color = c + dc * dl;
      break;
    }
  }
   gl_FragColor=color;
}